package sort.leetcode_215_medium;

import java.util.PriorityQueue;

public class PriorityQueueSolution {
    public int findKthLargest(int[] nums, int k){
        //建立一个大小为k的最小堆
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();
        for (int i = 0; i < k; i++){
            minHeap.add(nums[i]);
        }
        //动态调整堆结构
        //此时堆中已有k个元素，因此下标从k开始
        for(int i = k; i < nums.length; i++){
            //看一眼堆顶元素，如果当前元素 > 堆顶元素，就取出堆顶，加入当前元素
            int heapTop = minHeap.peek();
            if(nums[i] > heapTop){
                minHeap.poll();
                minHeap.add(nums[i]);
            }
        }
        return minHeap.poll();
    }
}
